import tensorflow as tf
import numpy as np

# 导入或者随机定义训练的数据 x 和 y
x_date = np.random.rand(100).astype(np.float32)
y_date = x_date * 0.1 + 0.3
# 先定义出参数 Weights，biases，拟合公式 y，误差公式 loss
weights = tf.Variable(tf.random_uniform([1], -0.1, 1.0))
biases = tf.Variable(tf.zeros([1]))
y = weights * x_date + biases
loss = tf.reduce_mean(tf.square(y - y_date))
# 选择 Gradient Descent 这个最基本的 Optimizer
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 神经网络的 key idea，就是让 loss 达到最小
train = optimizer.minimize(loss)
# 前面是定义，在运行模型前先要初始化所有变量
init = tf.global_variables_initializer()
# 接下来把结构激活，sesseion像一个指针指向要处理的地方
sess = tf.Session()
# init 就被激活了，不要忘记激活
sess.run(init)
# 训练201步
for step in range(201):
    # 要训练 train，也就是 optimizer
    sess.run(train)
    # 每 20 步打印一下结果，sess.run 指向 Weights，biases 并被输出
    if step % 20 == 0:
        print(step, sess.run(weights), sess.run(biases))
